package cn.seaboot.admin.mvc.mask;

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;

/**
 * 数据脱敏
 *
 * 字段注解，说明对象哪些字段需要脱敏
 *
 * @author Mr.css
 * @version 2023-06-28 17:40
 */
@Inherited
@Target({FIELD, METHOD, TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DesensitizeProperty {
    /**
     * 脱敏方式（未实现）
     * <p>
     * 类似于邮箱，数据脱敏方式需要专门进行处理，根据类型寻找脱敏方案
     *
     * @return desensitize type
     */
    String value() default "";

    /**
     * 前置保留位数
     *
     * @return desensitize type
     */
    int front() default 0;

    /**
     * 后置保留位数
     *
     * @return desensitize type
     */
    int back() default 0;
}